Page({
    data: {
      currentTab: 0,    // 当前选中的 Tab 索引
      orders: [],       // 原始订单数据（从数据库获取）
      filteredOrders: [],// 筛选后的订单数据
      loading: true,    // 加载状态
      // Tab 配置（便于维护）
      tabs: [
        { index: 0, name: '全部', key: 'all' },
        { index: 1, name: '待付款', key: 'pending' },
        { index: 2, name: '待使用', key: 'toUse' },
        { index: 3, name: '待发货', key: 'toShip' },
        { index: 4, name: '已完成', key: 'completed' },
        { index: 5, name: '已取消', key: 'canceled' }
      ]
    },
  
    /**
     * 生命周期函数：页面加载时执行
     */
    onLoad: function () {
      this.fetchOrdersFromDB(); // 从数据库获取订单数据
    },
  
    /**
     * 从数据库获取订单数据（模拟真实接口请求）
     */
    fetchOrdersFromDB: function () {
      this.setData({ loading: true });
  
      // 模拟数据库请求（实际开发中替换为 wx.request）
      setTimeout(() => {
        // 模拟从数据库获取的订单数据（包含服务类和商品类）
        const dbOrders = [
          // 服务类订单
          {
            orderId: 'ORD20251101001',
            orderNo: 'DENT20251101001',
            date: '2025-11-10 10:00',
            totalPrice: 298,
            status: '待付款',
            type: 'service', // 服务类订单
            merchant: {
              id: 'CLINIC001',
              name: '微笑牙科诊所',
              address: '北京市朝阳区建国路88号',
              logo: '/assets/images/my/avatar.jpg'
            },
            items: [
              {
                name: '超声波洁牙',
                desc: '深度清洁，去除牙菌斑',
                price: 298,
                productId: 'SVC001'
              }
            ]
          },
          {
            orderId: 'ORD20251102002',
            orderNo: 'DENT20251102002',
            date: '2025-11-15 14:30',
            totalPrice: 899,
            status: '待使用',
            type: 'service',
            merchant: {
              id: 'CLINIC002',
              name: '优牙口腔医院',
              address: '上海市黄浦区南京东路123号',
              logo: '/assets/images/my/avatar.jpg'
            },
            items: [
              {
                name: '牙齿美白套餐',
                desc: '冷光美白+口腔检查',
                price: 899,
                productId: 'SVC002'
              }
            ]
          },
          // 商品类订单
          {
            orderId: 'ORD20251110004',
            orderNo: 'PROD20251110004',
            date: '2025-11-10 16:45',
            totalPrice: 128.9,
            status: '待发货',
            type: 'product', // 商品类订单
            merchant: {
              id: 'SHOP001',
              name: '口腔护理官方店',
              logo: '/assets/images/my/avatar.jpg'
            },
            items: [
              {
                name: '专业抗敏感牙膏',
                attr: '规格：120g',
                price: 45.9,
                quantity: 2,
                image: '/assets/images/my/avatar.jpg',
                productId: 'PROD001'
              },
              {
                name: '软毛护龈牙刷',
                attr: '颜色：蓝色',
                price: 18.55,
                quantity: 2,
                image: '/assets/images/my/avatar.jpg',
                productId: 'PROD002'
              }
            ]
          },
          {
            orderId: 'ORD20251105005',
            orderNo: 'PROD20251105005',
            date: '2025-11-05 09:20',
            totalPrice: 89,
            status: '已完成',
            type: 'product',
            merchant: {
              id: 'SHOP001',
              name: '口腔护理官方店',
              logo: '/assets/images/my/avatar.jpg'
            },
            items: [
              {
                name: '舌苔清洁器',
                attr: '材质：硅胶',
                price: 29.9,
                quantity: 1,
                image: '/assets/images/my/avatar.jpg',
                productId: 'PROD003'
              }
            ]
          },
          {
            orderId: 'ORD20251108006',
            orderNo: 'PROD20251108006',
            date: '2025-11-08 11:30',
            totalPrice: 69,
            status: '已取消',
            type: 'product',
            merchant: {
              id: 'SHOP002',
              name: '儿童口腔用品店',
              logo: '/assets/images/my/avatar.jpg'
            },
            items: [
              {
                name: '儿童电动牙刷',
                attr: '年龄段：3-6岁，颜色：粉色',
                price: 69,
                quantity: 1,
                image: '/assets/images/my/avatar.jpg',
                productId: 'PROD005'
              }
            ]
          }
        ];
  
        // 更新数据并筛选（确保 setData 回调中执行筛选）
        this.setData({
          orders: dbOrders,
          loading: false
        }, () => {
          this.filterOrdersByTab(this.data.currentTab); // 初始化筛选
        });
      }, 1000); // 模拟网络延迟
    },
  
    /**
     * 根据 Tab 索引筛选订单
     * @param {number} tabIndex - Tab 索引
     */
    filterOrdersByTab: function (tabIndex) {
      const { orders } = this.data;
      let filtered = [];
  
      // 严格根据 Tab 索引筛选订单
      switch (tabIndex) {
        case 0: // 全部
          filtered = [...orders]; // 浅拷贝，避免修改原始数据
          break;
        case 1: // 待付款（所有类型的待付款订单）
          filtered = orders.filter(item => item.status === '待付款');
          break;
        case 2: // 待使用（仅服务类订单）
          filtered = orders.filter(item => item.type === 'service' && item.status === '待使用');
          break;
        case 3: // 待发货（仅商品类订单）
          filtered = orders.filter(item => item.type === 'product' && item.status === '待发货');
          break;
        case 4: // 已完成（所有类型的已完成订单）
          filtered = orders.filter(item => item.status === '已完成');
          break;
        case 5: // 已取消（所有类型的已取消订单）
          filtered = orders.filter(item => item.status === '已取消');
          break;
        default:
          filtered = [...orders];
      }
  
      // 更新筛选后的订单数据
      this.setData({ filteredOrders: filtered });
    },
  
    /**
     * 切换 Tab（核心修复：确保事件触发和数据更新）
     * @param {object} e - 事件对象
     */
    switchTab: function (e) {
      // 1. 获取当前点击的 Tab 索引
      const tabIndex = Number(e.currentTarget.dataset.index);
  
      // 2. 避免重复点击同一 Tab
      if (this.data.currentTab === tabIndex) return;
  
      // 3. 更新 currentTab，并在回调中执行筛选（确保数据更新完成后筛选）
      this.setData({ currentTab: tabIndex }, () => {
        this.filterOrdersByTab(tabIndex);
  
        // 4. 可选：添加 Tab 切换动画（滚动到顶部）
        wx.pageScrollTo({
          scrollTop: 0,
          duration: 300
        });
      });
    },
  
    /**
     * 获取订单状态对应的样式类
     * @param {string} status - 订单状态
     * @returns {string} 样式类名
     */
    getStatusClass: function (status) {
      switch (status) {
        case '待付款': return 'status-pending';
        case '待使用': return 'status-to-use';
        case '待发货': return 'status-to-ship';
        case '已完成': return 'status-completed';
        case '已取消': return 'status-canceled';
        default: return '';
      }
    },
  
    /**
     * 获取空状态提示文本
     * @returns {string} 提示文本
     */
    getEmptyText: function () {
      const { currentTab } = this.data;
      const tabConfig = this.data.tabs.find(tab => tab.index === currentTab);
      return `暂无${tabConfig?.name}订单`;
    },
  
    // ----------------- 事件处理函数 -----------------
    /**
     * 查看订单详情
     */
    handleDetail: function (e) {
      const orderId = e.currentTarget.dataset.orderid;
      wx.navigateTo({ url: `/pages/orderDetail/orderDetail?orderId=${orderId}` });
    },
  
    /**
     * 立即支付
     */
    handlePay: function (e) {
        const orderId = e.currentTarget.dataset.orderid;
        
        // 使用 wx.showModal 替代 wx.showToast
        wx.showModal({
          title: '支付确认',
          content: `请确认支付订单：\n${orderId}`,
          confirmText: '立即支付',
          confirmColor: '#2f80ed', // 使用主题色
          cancelText: '取消',
          success: (res) => {
            if (res.confirm) {
              // 用户点击了“立即支付”按钮
              console.log('用户确认支付订单:', orderId);
              
              // 在这里可以继续执行真正的支付逻辑
              // 例如，调用微信支付接口 wx.requestPayment
              wx.showToast({
                title: '正在跳转到支付...',
                icon: 'loading',
                duration: 1000
              });
              
              // 模拟支付请求
              setTimeout(() => {
                wx.hideToast();
                wx.showModal({
                  title: '支付成功',
                  content: `订单支付成功！`,
                  showCancel: false,
                  confirmText: '完成'
                });
              }, 1000);
      
            } else if (res.cancel) {
              // 用户点击了“取消”按钮
              console.log('用户取消了支付', orderId);
              wx.showToast({
                title: '已取消支付',
                icon: 'none'
              });
            }
          }
        });
      },
  
    /**
     * 确认使用（服务订单）
     */
    handleUse: function (e) {
        const orderId = e.currentTarget.dataset.orderid;
        wx.showModal({
          title: '确认使用', // 模态框标题
          content: `订单号：${orderId}`, // 模态框内容（可自定义格式）
          showCancel: false, // 隐藏“取消”按钮
          confirmText: '确认使用', // 自定义“确认”按钮文字
          confirmColor: '#2f80ed', // 确认按钮颜色（可选）
          success: (res) => {
            if (res.confirm) {
              // 用户点击“确认”后，执行真正的“确认使用”逻辑
              console.log('执行确认使用订单的操作，订单号：', orderId);
            }
          }
        });
      },
  
    /**
     * 取消订单
     */
    handleCancel: function (e) {
      const orderId = e.currentTarget.dataset.orderid;
      wx.showModal({
        title: '提示',
        content: '确定要取消订单吗？',
        success: (res) => {
          if (res.confirm) {
            // 模拟取消订单（实际开发中调用接口更新数据库）
            const updatedOrders = this.data.orders.map(order => {
              if (order.orderId === orderId) {
                return { ...order, status: '已取消' };
              }
              return order;
            });
  
            this.setData({ orders: updatedOrders }, () => {
              this.filterOrdersByTab(this.data.currentTab); // 刷新筛选结果
              wx.showToast({ title: '订单已取消', icon: 'success' });
            });
          }
        }
      });
    },
  
    /**
     * 跳转到首页
     */
    goToHome: function () {
      wx.switchTab({ url: '/pages/index/index' });
    },
  
    /**
     * 跳转到商家/诊所页面
     */
    goToMerchant: function (e) {
      const merchantId = e.currentTarget.dataset.merchantid;
      wx.navigateTo({ url: `/pages/merchant/merchant?id=${merchantId}` });
    },
  
    /**
     * 下拉刷新（优化用户体验）
     */
    onPullDownRefresh: function () {
      this.fetchOrdersFromDB(); // 重新获取订单数据
      wx.stopPullDownRefresh(); // 停止下拉刷新动画
    }
  });